/*  ----------------------------------------------------------------------------
 *  Arello Mobile
 *  Fast 3d Engine
 *  ----------------------------------------------------------------------------
 * Except where otherwise noted, this work is licensed under
 * http://creativecommons.org/licenses/by/3.0
 */

#pragma once

#include <properties/PropertyContainer.h>
#include <properties/CommandContainer.h>
#include "AtomPath.h"

namespace liba {
namespace animate {

class Node 
	: public properties::PropertyContainer
	, public properties::CommandContainer
{
public:
	Node(const Atom & name = Atom() )
		:	name( name )
	{}
	Node(const Node& rhs)
		: name(rhs.name)
	{ }

	Node * FindAnimateNode(const AtomPath & path, bool recursion);
	const Atom & GetName()const { return name; }
	void SetName(const Atom & value) { name = value; }
	virtual Node * FindAnimateNode(const Atom & name, bool recursion)
	{
		return 0;
	}
private:
	Node * FindAnimateNodeInternal(const AtomPath & path, int curr_element);
	Atom name;
};

} // namespace animate
} // namespace liba
using namespace liba;
